From: Timm Bäder Date: Tue, 17 Dec 2019 15:06:28 +0000 (+0100) Subject: gl renderer: Move color computation to vertex shader X-Git-Tag: archive/raspbian/4.4.1+ds1-2+rpi1~1^2~321^2^2~419 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=0b8298038a67e5db50ae7fd1753a1232a59ac51e;p=gtk4.git gl renderer: Move color computation to vertex shader --- diff --git a/gsk/resources/glsl/border.glsl b/gsk/resources/glsl/border.glsl index 6a0ff18024..a47fe7e393 100644 --- a/gsk/resources/glsl/border.glsl +++ b/gsk/resources/glsl/border.glsl @@ -1,14 +1,22 @@ // VERTEX_SHADER: +uniform vec4 u_color; + +_OUT_ vec4 final_color; void main() { gl_Position = u_projection * u_modelview * vec4(aPosition, 0.0, 1.0); + + final_color = u_color; + final_color.rgb *= final_color.a; // pre-multiply + final_color *= u_alpha; } // FRAGMENT_SHADER: -uniform vec4 u_color; uniform vec4 u_widths; uniform vec4[3] u_outline_rect; +_IN_ vec4 final_color; + void main() { vec4 f = gl_FragCoord; f.x += u_viewport.x; @@ -21,9 +29,5 @@ void main() { rounded_rect_coverage (inside, f.xy), 0.0, 1.0); - /* Pre-multiply */ - vec4 color = u_color; - color.rgb *= color.a; - - setOutputColor (color * alpha * u_alpha); + setOutputColor(final_color * alpha); }